// import store from '@/stores'
import axios from 'axios'
import { message as Message } from 'ant-design-vue'
import { getSatoken } from './localStorageHandler'
import router from '@/router/index.js'

const request = axios.create({
  baseURL: 'http://127.0.0.1:8080/', // 配置baseURL
  timeout: 1000 * 60 * 10, // 默认超时时间为10分钟
  // timeout: 20*1000 // 默认超时时间为20秒
})

// 定义请求拦截器
request.interceptors.request.use(
  (config) => {
    // 统一注入token信息
    const satoken = getSatoken('satoken')
    if (satoken) {
      config.headers.satoken = satoken
    }
    return config
  },
  (error) => {
    console.log(error)
    return Promise.reject(error)
  },
)

// 响应拦截器
request.interceptors.response.use(
  // 成功以后的响应拦截器，服务端返回的响应码为200
  (response) => {
    const { success, msg, data } = response.data
    // 判断业务处理是否成功
    if (success) {
      // 业务成功后的处理
      return data
    } else {
      // 业务失败后的处理，给出消息提示
      Message.error(msg)
      // token不合法
      if (msg == '未登录或会话信息过期，请重新登录！') {
        router.push('/')
      }
      return Promise.reject(new Error(msg))
    }
  },
  // 请求失败以后的响应拦截器，服务端返回的响应码非200
  (error) => {
    Message.error(error.message)
    return Promise.reject(error)
  },
)

export default request
